package co.com.inversiones.xyz.ltda.bl;

import java.util.List;

import co.com.inversiones.xyz.ltda.dto.Rol;
import co.com.inversiones.xyz.ltda.dto.Solicitud;
import co.com.inversiones.xyz.ltda.exception.BlException;
import co.com.inversiones.xyz.ltda.exception.DaoException;

public interface SolicitudBl {

	 /**
	 * Este metodo consulta las solicitudes que esten en el sistema y que se
     * encuentren en un estado especifico
	 * @param estado estado en la que se encuentra la solicitud
	 * @return La lista de solisitudes que tienen como estado el parametro de
     * entrada
	 * @throws DaoException
	 * @throws BlException
	 */
	 public List<Solicitud> leerSolicitudesGood( String estado) throws DaoException, BlException;
	 
	 /**
	  * Este metodo consulta las solicitudes que esten en el sistema y que se
	  * encuentren en un estado especifico. A diferencia del primero consulta
	  * todas las solicitudes y las separa en java
	  * @param rol Clase que contiene el rol del usuario, y permite identificar
	  * que solicitudes traer
	  * @param op Es un entero que permite hacer una cosa o la otra.
	  * @return La lista de solisitudes.
	  * @throws DaoException
	  * @throws BlException
	  */
	 public List<Solicitud> leerSolicitudes(Rol rol, int op) throws DaoException, BlException; 
	 
	 /**
	  * Este metodo consulta una solicitud por su codigo
	  * @param codigo Codigo de la solicitud
	  * @return Solicitud por codigo
	  * @throws DaoException
	  * @throws BlException
	  */
	 public Solicitud buscarSolicitud(int codigo) throws DaoException, BlException;
	 
	 /**
	  * Metodo para guardar una solicitud en el sistema
	  * @param sucursal
	  * @param tipo tipo de la solicitud
	  * @param estado Muesta el estado de la solicitud
	  * @param nombreCliente nombre del cliente que hace la solicitud
	  * @param correo correo del cliente que hace la solicitud
	  * @param celular celular del cliente que hace la solicitud
	  * @param texto texto que el cliente hace
	  * @param producto producto por el cual el cliente hace la solicitud
	  * @throws DaoException
	  * @throws BlException
	  */
	 public void guardarSolicitud( int sucursal, String tipo, String estado, 
	    String nombreCliente, String correo, String celular, String texto, String producto) 
	    throws DaoException, BlException;
	 
	 /**
	  * El metodo actualiza una solicitud en especifico
	  * @param solicitud a actualizar
	  * @throws DaoException
	  * @throws BlException
	  */
	 public void modificarSolicitud(Solicitud solicitud) throws DaoException, BlException;
}
